package com.atwisdom.star.common.util;

import jodd.util.StringUtil;

import java.util.*;

/**
 * 动态数据源上下文
 */
public class DynamicDataSourceContextHolder {


    private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<String>() {
        @Override
        protected String initialValue() {
            return "master";
        }
    };


    /**
     * 数据源的 key集合，用于切换时判断数据源是否存在
     */
    public static Set<Object> dataSourceKeys = new HashSet<>();


    /**
     * 切换数据源
     * @param key  数据源
     */
    public static void setDataSourceKey(String key) {
        if (!StringUtil.isEmpty(key)) {
            CONTEXT_HOLDER.set(key);
        }
    }


    /**
     * 获取数据源
     * @return
     */
    public static String getDataSourceKey() {
        return CONTEXT_HOLDER.get();
    }


    /**
     * 重置数据源
     */
    public static void clearDataSourceKey() {
        CONTEXT_HOLDER.remove();
    }


    /**
     * 判断是否包含数据源
     * @param key   数据源
     * @return
     */
    public static boolean containDataSourceKey(String key) {
        return dataSourceKeys.contains(key);
    }


    /**
     * 添加数据源Keys
     * @param keys
     * @return
     */
    public static boolean addDataSourceKeys(Collection<? extends Object> keys) {
        return dataSourceKeys.addAll(keys);
    }
}
